Conventional video coding standards divide each picture into a sequence of basic units that are processed sequentially, due to dependencies between neighboring basic units, to achieve good quality video coding. In older standards such as MPEG-1, MPEG-2 and MPEG-4 Advanced Video Coding, the basic unit is a macroblock of 16×16 pixels. A corresponding basic unit for tree-coded video compression is a coding tree unit. The coding tree unit is further divided using K-tree partitioning into variable size coding units with sizes of 8×8, 16×16, 32×32 or 64×64 pixels. For a high-efficiency video coding recommendation (i.e., an International Telecommunication Union-Telecommunications Recommendation H.265), the parameter K=4, meaning that the coding tree units can be divided using quad-tree partitioning.
Depending on the content, different coding unit sizes within a coding tree unit lead to better quality. Therefore, all combinations of coding unit sizes are explored to find the tree partitioning that yields a best quality video coding. The exploring increases the coding complexity by a factor of four. Some conventional encoders use multiple processing devices operating in parallel to explore the mode decisions for the coding units of different sizes. However, because the coding units of different sizes can be mixed within a coding tree unit, and because of dependencies that exist between coding units and the neighboring coding units (both within a coding tree unit and between neighboring coding tree units), the multiple processing devices are tightly coupled.
It would be desirable to implement tree-coded video compression with coupled pipelines.